gpt4 book ai didi

C++ getline() 不结束输入

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:13 24 4
gpt4 key购买 nike

string str, temp;

string c;

cout << "Insert the character that ends the input:" << endl;

getline(cin, c);

cout << "Insert the string:" << endl;

getline(cin, str, c.c_str()[0]);

我应该能够在字符串中“测试”一个字符串,直到我对结束字符进行数字化,但是如果我输入一个双换行符,它就无法识别结束字符并且不会结束输入。

这是输出:

Insert the character that ends the input:
}
Insert the string:
asdf

}
do it}
damn}

最佳答案

您可能需要稍微重新设计您的代码,例如如果定界符是一个字符,那么为什么要读取 string(并使用一种晦涩的语法,如 "c.c_str()[0]"- 至少只使用c[0] 从字符串中提取第一个字符)?只需阅读单个分隔符即可。

此外,我没有看到 getline() 的意外结果。

如果你尝试这段代码:

#include <iostream>
#include <string>
using namespace std;

int main()
{
cout << "Insert the character that ends the input: " << endl;
char delim;
cin >> delim;

string str;
cout << "Insert the string: " << endl;
getline(cin, str, delim);

cout << "String: " << str << endl;
}

输出符合预期,例如输入字符串“hello!world”在分隔符“!”处被截断,结果只是“hello”:

C:\TEMP\CppTests>cl /EHsc /W4 /nologo /MTd test.cpp
test.cpp

C:\TEMP\CppTests>test.exe
Insert the character that ends the input:
!
Insert the string:
hello!world
String:
hello

关于C++ getline() 不结束输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15184850/

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