gpt4 book ai didi

C++ cin 在点击回车后没有返回

转载 作者:行者123 更新时间:2023-11-30 03:32:28 28 4
gpt4 key购买 nike

所以我希望能够输入如下内容:'6, -15, 12, 44, ...' 等等。并将这些整数添加到 vector 中。但是,当我输入上述输入并按回车键时,它什么也没做。如果我然后输入一个字母并按回车键,然后输入另一个字母并按回车键,它最终会返回所需的结果。如果我输入更多数字并按回车键,它将继续返回任何内容。有人可以指出我这里出了什么问题的正确方向吗?多谢你们。我希望我对这个问题的解释是有道理的。

int main()
{

// The user inputs a string of numbers (e.g. "6, 4, -2, 88, ..etc") and those integers are then put into a vector named 'vec'.
std::vector<int> vec;

int value;
std::cin >> value;

if ( std::cin )
{

vec.push_back( value );
char separator;

while ( std::cin >> separator >> value )
{
vec.push_back( value );
}

}

std::cout << vec.size() << std::endl;
for ( int i = 0; i < vec.size(); i++ )
{
std::cout << vec.at(i) << ' ';
}
std::cout << std::endl;
}

最佳答案

However when I enter said input and press enter it does nothing.

这是对程序功能的错误解释。向您的程序添加一些调试输出,您会注意到该程序正在处理您的输入。

while ( std::cin >> separator >> value ) 
{
std::cout << "Read separator: " << separator << std::endl;
std::cout << "Read value: " << value << std::endl;

vec.push_back( value );
}

If I then enter a letter and press enter, then enter another letter and press enter, it finally returns the desired result.

您似乎希望程序在您输入一行文本后停止读取输入。

如果您编写了程序,while 循环不会在您按下 Enter 时停止。它等待下一行的额外输入。

通过输入字母,您已经为分隔符 提供了输入。通过输入另一个字母,您已将 std::cin 置于错误状态。那是 while 循环中断的时候。

在我看来,您真正要寻找的是:

  1. 阅读一行文字。您可以为此使用 std::getline
  2. 读出文本行中的数字。您可以为此使用 std::istringstream
  3. 输出数据。

int main()
{
// The user inputs a string of numbers (e.g. "6, 4, -2, 88, ..etc") and those integers are then put into a vector named 'vec'.
std::vector<int> vec;

std::string line;
if ( getline(std::cin, line) )
{
std::istringstream str(line);

int value;
str >> value;
vec.push_back( value );
char separator;
while ( str >> separator >> value )
{
vec.push_back( value );
}
}

std::cout << vec.size() << std::endl;
for ( int i = 0; i < vec.size(); i++ )
{
std::cout << vec.at(i) << ' ';
}
std::cout << std::endl;
}

关于C++ cin 在点击回车后没有返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43434158/

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