gpt4 book ai didi

C++ 使用 istringstream 从 stdin 读取

转载 作者:行者123 更新时间:2023-11-28 05:44:13 27 4
gpt4 key购买 nike

我试图从键盘调用不同的功能,但由于我对 cin、istringstream 等缺乏知识/经验,我遇到了一些问题。这是我的简化代码:

#include <iostream>
#include <sstream>

using namespace std;

int main(int argc,char **argv) {

string line;
do {
getline(cin,line);
istringstream iss(line);
string word;
iss >> word;
if (word == "function") {
int id;
if (!(iss >> id)) {
cout << "Not integer.Try again" << endl;
continue;
}
cout << id << endl;
iss >> word;
cout << word << endl;
}
else cout << "No such function found.Try again!" << endl;
} while (!cin.eof());

cout << "Program Terminated" << endl;
return 0;
}

我目前处理的两个问题是:

• 为什么在检查我是否得到整数后,do-while 循环会在我输入非整数时终止? (例如“function dw25”)-必须使用 continue;而不是 break;.Thought break 会退出外部 if 条件。

• 我不想得到 id == 25 & word == dwa,所以输入“function 25dwa”时出现的问题如何解决。

最佳答案

我想你可以使用 strtol检查 id 是否为整数。

#include <iostream>
#include <sstream>
#include <stdlib.h>

using namespace std;

int main()
{
string word, value;
while ((cin >> word >> value)) {
if (word == "function") {
char* e;
int id = (int) strtol(value.c_str(), &e, 10);
if (*e) {
cout << "Not integer.Try again" << endl;
break;
}
cout << id << endl;
if (!(cin >> word))
break;

cout << word << endl;
} else {
cout << "No such function found.Try again!" << endl;
}
}

cout << "Program Terminated" << endl;
return 0;
}

关于C++ 使用 istringstream 从 stdin 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36532876/

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