c++中使用换行符分割字符串
Splitting strings by newline character in C++
如果我有两个表存储在std::string
变量中,我如何并排显示它们?尤其是…
我有std::string table1
包含以下内容:
X | Y
-------
2 | 3
1 | 3
5 | 2
我有std::string table2
,其中包含以下内容:
X | Y
-------
1 | 6
1 | 1
2 | 1
3 | 5
2 | 3
我需要修改它们(或者只是将它们打印到标准输出),以便出现以下内容:
X | Y X | Y
------- -------
2 | 3 1 | 6
1 | 3 1 | 1
5 | 2 2 | 1
3 | 5
2 | 3
换句话说,我有两个表存储在std::string
变量中,用换行符分隔行。
我想把它们打印到屏幕上(使用std::cout
),这样表就会并排出现,垂直对齐在顶部。我怎么能这么做?
例如,如果我可以做类似std::cout << table1.nextToken('n')
的事情,其中nextToken('n')
给出下一个令牌,令牌由'n'
字符分隔,然后我可以设计一种循环遍历所有令牌的方法,一旦使用了所有table1
令牌,然后我可以简单地打印空格字符,以便table2
的剩余令牌正确地水平对齐。但是,这样的nextToken(std::string)
函数不存在-我不知道它,至少。
关键词:istringstream, getline
Implementaion:
#include <iostream>
#include <sstream>
int main()
{
std::string table1 =
" X | Yn"
"-------n"
" 2 | 3n"
" 1 | 3n"
" 5 | 2n";
std::string table2 =
" X | Yn"
"-------n"
" 1 | 6n"
" 1 | 1n"
" 2 | 1n"
" 3 | 5n"
" 2 | 3n";
std::istringstream streamTable1(table1);
std::istringstream streamTable2(table2);
while (!streamTable1.eof() || !streamTable2.eof())
{
std::string s1;
getline(streamTable1, s1);
while (s1.size() < 9)
s1 += " ";
std::string s2;
getline(streamTable2, s2);
std::cout << s1 << s2 << std::endl;
}
}
相关文章:
- 如何在C++中从字符串中分割字符
- 由cin中的字符串中未捕获空白引起的分割错误
- 按分度分割字符串
- 分割故障:核心倾倒C 矢量对字符串:
- 我应该使用哪个函数来分割字符串
- 如何使用STL分割字符串
- C++如何使用多个分隔符分割字符串流
- 根据分度分割字符串
- 在空格上有选择地分割字符串
- 分割字符串作为邻接矩阵索引
- 用空格分割字符串,但只得到第一个单词
- c++中使用换行符分割字符串
- Std::locale按特定字符分割字符串而不忽略它
- 分割字符串并在不同的分隔符之前获取值
- 如果字符串包含多个 ,如何在每25个换行符( )上分割字符串
- Regex每两个字符分割字符串
- c++中左边的分割字符串
- 在c++中使用字符串(搜索字符串,分割字符串,cout<<字符串)
- 分割字符串
- 使用getline和while循环分割字符串