gpt4 book ai didi

c++ - istringstream 运算符>> 返回值

转载 作者:行者123 更新时间:2023-11-28 01:47:04 24 4
gpt4 key购买 nike

不幸的是this没有帮助...

我有一个软件在实现时抛出异常,但我需要知道如何避免它。下面是具体部分:

if (!(iss >> c)) {
throw std::runtime_error(
"No return code: status line doesn't begin with return code");
}

这就是整个方法。

void parseReply(std::ostream& os, std::istream& is, std::string &strReturn) {

std::string s;
int c;

while (std::getline(is, s)) {
strReturn += s;
strReturn += '\n';

std::istringstream iss(s);
if (!(iss >> c)) {
throw std::runtime_error(
"No return code: status line doesn't begin with return code");
}

if (CODE_OK == c
|| CODE_ERROR == c
|| CODE_BUSSY == c
|| CODE_UNKNOWN_CMD == c
) {
break;
}
}

if (CODE_OK != c
&& CODE_UNKNOWN_CMD != c
&& CODE_BUSSY != c
) {
throw std::runtime_error("error: " + s);
}

while (is >> s) {
flyelite::util::chop(s);
strReturn += s;
if (">" == s) {
return;
}
}

return;

该方法解析一个tcp报文answer的数据内容。每条消息都以“>”字符确认。

现在的问题是,有时(主要是当循环中有很多消息时)iss 的内容是:

"> 250 Alright"

正确的格式是

"250 Alright"

  • 为什么 (iss >> c) 返回 falseiss 的第一个内容是“>”时?
  • 发件人是否有可能在他的回答中返回第二个“>”?

提前致谢

最佳答案

Why does (iss >> c) return false when the first content of iss is a ">"?

当读入的字符是“>”时,iss >> c 返回 false,因为它需要一个整数并希望将值赋给变量 c,当找不到这样的整数时,istream 进入错误状态。

Is it possible that the sender returned a second ">" in his answer?

您在“状态”中看到的可能只是您无法读入(由于上述原因)的输入流剩余值

关于c++ - istringstream 运算符>> 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44632803/

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