gpt4 book ai didi

C++ - 我如何误用 istringstream 忽略?

转载 作者:行者123 更新时间:2023-11-27 23:37:15 26 4
gpt4 key购买 nike

我计划在主代码中要求用户以 (800) 555-1212 的形式输入电话号码,这将被发送到我的 PhoneNumber 构造函数,然后发送到 setPhoneNumber 来分解它,设置我的私有(private)变量,并分析错误。此外,我想编写我的 setPhoneNumber 代码,以解决原始输入中的用户错误。我的 PhoneNumber.h 代码是:

// PhoneNumber.h
#ifndef PHONENUMBER_H
#define PHONENUMBER_H

#include <string>

class PhoneNumber {
private:
short areaCode;
short exchange;
short line;
public:
PhoneNumber(std::string number);
void setPhoneNumber(std::string number);
void printPhoneNumber() const;
};
#endif

这是我的 PhoneNumber.cpp 代码

// PhoneNumber.cpp
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <cctype>
#include "PhoneNumber.h"

PhoneNumber::PhoneNumber(std::string number) {
setPhoneNumber(number);
}

void PhoneNumber::setPhoneNumber(std::string number) {
bool areaCodeDone = false;
bool exchangeDone = false;
int length = number.length();

std::istringstream iss(number);
for (int i = 0; i < length; i++) {
if (! areaCodeDone) {
if (! std::isdigit(number[i])) {
std::string str;
iss >> std::ignore();
}
else {
iss >> std::setw(3) >> areaCode;
areaCodeDone = true;
}
}
else if (! exchangeDone) {
if (! std::isdigit(number[i])) {
iss >> std::ignore();
}
else {
iss >> std::setw(3) >> exchange;
exchangeDone = true;
}
}
else {
if (! std::isdigit(number[i])) {
iss >> std::ignore();
}
else {
if (length - i < 4) {
throw std::invalid_argument("Something wrong with phone number entry.");
}
else {
iss >> std::setw(4) >> line;
}
}
}
}
}

我得到的错误与 std::ignore 有关,但我不知道我是如何错误地使用它的。 g++ 编译器的错误是:

PhoneNumber.cpp:23:32: error: no match for call to ‘(const std::_Swallow_assign) ()’

iss >> std::ignore();

最佳答案

std::ignore()与您希望完成的目标有着截然不同的目的。而不是

iss >> std::ignore();

使用

iss.ignore();

您可以在 https://en.cppreference.com/w/cpp/io/basic_istream/ignore 查看 std::istream::ignore() 的文档和示例用法.

关于C++ - 我如何误用 istringstream 忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58350979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com