【发布时间】:2011-08-18 11:30:55
【问题描述】:
我正在尝试存储用户通过控制台输入的输入。所以我需要包括“输入”和任何空白。
但是cin 在第一个空格之后停止给我输入。
有没有办法在按下 CTRL+Z 之前读取整行?
【问题讨论】:
-
我在搜索时没有找到这篇文章。如果我这样做了,我会再发一个^^抱歉,下次我会尝试更深入地研究
标签: c++
我正在尝试存储用户通过控制台输入的输入。所以我需要包括“输入”和任何空白。
但是cin 在第一个空格之后停止给我输入。
有没有办法在按下 CTRL+Z 之前读取整行?
【问题讨论】:
标签: c++
可以在c++中使用getline函数
#include<iostream>
using namespace std;
int main()
{
char msg[100];
cin.getline(msg,100);
return 0;
}
【讨论】:
#include <string>
#include <iostream>
int main()
{
std::cout << "enter your name: ";
std::string name;
std::getline(std::cin, name);
return 0;
}
【讨论】:
在按下 CTRL+Z 之前有没有类似 readLines 的方法??
是的,就是这样,使用免费的std::getline函数(不是istream的同名方法!):
string line;
while (getline(cin, line)) {
// do something with the line
}
这将从输入中读取行(包括空格,但不结束换行符),直到到达输入结尾或cin 发出错误信号。
【讨论】:
getline 读取整行。如果您通过cin >> line 输入字符串,那么它只会读取到第一个空格。
对于我的程序,我编写了以下代码,它读取输入的每个字符,直到按下 ctrl+x。代码如下:
char a;
string b;
while (a != 24)
{
cin.get(a);
b=b+a;
}
cout << b;
对于 Ctrl+z,输入:
char a;
string b;
while (a != 26)
{
cin.get(a);
b=b+a;
}
cout << b;
我无法确认 ctr+z 解决方案是否有效,因为我在 UNIX 机器上,并且 ctrl+z 会终止程序。但是,它可能适用于 Windows,也可能不适用于 Windows;你必须自己去看看。
【讨论】:
#include <iostream>
#include <string>
using namespace std;
int main()
string s;
while( getline( cin, s ) ) {
// do something with s
}
}
【讨论】: