使用多个空格 (>1) 作为分隔符,使用 C++ 或 linux 将一行分隔为列
Separate a line to columns using several spaces (>1) as a delimiter using C++ or linux
我有几行像这样:
4539(随机空格数)07235001(随机空格数)Aach(随机空格数)Trier Saarburg
我想使用c++或linux将其分离为4列。我想要的输出看起来像这样:
4539 | 07235001 | Aach |特里尔Saasburg
所以我想把几个空格当作分隔符,而不是一个。
(空格的随机数总是> 1)
行并不总是由4列组成,空格问题也不总是在最后一列。
Thanks in advance
您应该单独阅读每个字段。最后一个字段可以读到换行符
为止。character is received:
std::string column1;
std::string column2;
std::string column3;
std::string column4;
while (input_file >> column1)
{
input_file >> column2;
input_file >> column3;
getline(input_file, column4);
}
另一种方法是使用getline
读取整行,然后使用std::string::find
和std::string::substr
取出子字符串字段。
您可以使用awk和正则表达式:
echo "4539 07235001 Aach Trier Saarburg" | awk 'BEGIN { FS = "[ ]{2,}" } { OFS = "|" }; {$1=$1; print $0 }'
FS
变量用于设置每条记录的字段分隔符,可以包含任意正则表达式。OFS
的输出相当于FS
变量。
相关文章:
- 在C++/Linux中设置单调时钟的一些技巧
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如何在linux终端中同时编译和运行c++代码
- 在Linux for Windows上编译C++代码时出错
- 如何找到锁定Linux futex的C++行
- 在linux上调试巨大的C++项目
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- c++方法参数只能在linux的发布模式下自行更改
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?
- 函数在Windows或Linux上运行时表现不同
- 在Linux下捕获SIGKILL的C++程序
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- mysql C++ connector [mysql-connector-c++-8.0.19-linux-glibc2
- 这些是什么样的错误?即使我不在 Linux 上工作,我也遇到了 Linux 错误
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建