告诉cin停止在newline阅读
tell cin to stop reading at newline
假设我想从输入中读取整数的行a,如下所示:
1 2 3 4 5n
我想让cin停在'\n'字符处,但cin似乎认不出来。
下面是我使用的。
vector<int> getclause() {
char c;
vector<int> cl;
while ( cin >> c && c!='n') {
cl.push_back(c);
cin>>c;
}
return cl;
}
我应该如何修改它,使cin在看到"\n"字符时停止?
使用getline和distingstream:
#include <sstream>
/*....*/
vector<int> getclause() {
char c;
vector<int> cl;
std::string line;
std::getline(cin, line);
std::istringstream iss(line);
while ( iss >> c) {
cl.push_back(c);
}
return cl;
}
您可以通过在istream
:上设置noskipws来读取所有空白
#include <ios>
#include <iostream>
#include <vector>
using std::vector;
vector<int> getc() {
char c;
vector<int> cl;
std::cin >> std::noskipws;
while (std::cin >> c && c != 'n') {
cl.push_back(c);
std::cin >> c;
}
return cl;
}
如果标准输入只包含一行,那么您还可以使用istream_iterator
:构建向量
#include <iostream>
#include <iterator>
#include <vector>
using std::vector;
vector<int> getc() {
// Replace char with int if you want to parse numbers instead of character codes
vector<int> cl{
std::istream_iterator<char>(std::cin),
std::istream_iterator<char>()
};
return cl;
}
您可以使用getline方法首先获取该行,然后使用istringstream从该行获取格式化的输入。
使用std::getline,这将完成
getchar()
在这种情况下处理字符时比cin
更高效
我试着对一行长度未知的字符做同样的处理,并希望它停在换行符处,但它有一个无限循环,并且没有检测到换行符,所以我只使用了getchar()
而不是cin
,它可以在上运行
通过这个链接,实现这一点非常简单。
#include <stdio.h>
int main(void) {
int i=0,size,arr[10000];
char temp;
do{
scanf("%d%c", &arr[i], &temp);
i++;
} while(temp!= 'n');
size=i;
for(i=0;i<size;i++){
printf("%d ",arr[i]);
}
return 0;
}
相关文章:
- 循环后如何继续阅读
- 用c++阅读音频
- C++ - Unicode Newline
- 如何从QFile阅读?它显示该文件不可访问
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 有没有办法使用 c++ 实时阅读文本?
- 阅读 QML 中结构C++ QVector 的 QVector
- 当QProcess需要用户使用Qt输入时,如何阅读
- 在 c++ 中逐行阅读字符串,不要以空格停止
- C++ 如何暂停控制台输出,以便用户可以在继续之前阅读信息
- 如何阅读两个单词,然后阅读C++中的一行?
- 是否可以使用 Python csv 阅读器读取使用 C++ std::setw 生成的文件?
- 我如何阅读简单的控制台输出
- 非常快速地阅读 CSV 文件
- 阅读从 istream 到矢量的不同类型列表
- CImg阅读图像
- 如何只阅读最后一行的开头?
- 我们如何跳过帧,计算帧数并使用视频阅读器获取当前帧
- C++将特定的数据模式从RFID阅读器写入文本文件
- 告诉cin停止在newline阅读