我正在从标准输入流中获取输入.如,
1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
要么
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
我正在使用:
std::string in;
std::getline(std::cin, in);
Run Code Online (Sandbox Code Playgroud)
但这只是抓住换行符,对吗?如何使用iosteam,string和cstdlib将它们分隔为换行符或空格?
Ton*_*roy 28
只需使用:
your_type x;
while (std::cin >> x)
{
// use x
}
Run Code Online (Sandbox Code Playgroud)
operator>>默认会跳过空格.你可以链接东西一次读取几个变量:
if (std::cin >> my_string >> my_number)
// use them both
Run Code Online (Sandbox Code Playgroud)
getline()读取一行中的所有内容,返回它是否为空或包含数十个以空格分隔的元素.如果您提供可选的替代分隔符ala,getline(std::cin, my_string, ' ')它仍然不会执行您想要的操作,例如将读取选项卡my_string.
可能不需要这个,但是你很快就会感兴趣的一个相当普遍的要求就是读取一行换行符,然后将其拆分成组件......
std::string line;
while (std::getline(std::cin, line))
{
std::istringstream iss(line);
first_type first_on_line;
second_type second_on_line;
third_type third_on_line;
if (iss >> first_on_line >> second_on_line >> third_on_line)
...
}
Run Code Online (Sandbox Code Playgroud)
使用'q'的可选参数getline。
#include <iostream>
#include <sstream>
int main() {
std::string numbers_str;
getline( std::cin, numbers_str, 'q' );
int number;
for ( std::istringstream numbers_iss( numbers_str );
numbers_iss >> number; ) {
std::cout << number << ' ';
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105408 次 |
| 最近记录: |