在 C++ 中拆分字符串
spliting string in C++
我想知道如何在整数之前拆分字符串。可能吗?
我写了一个转换器,可以从旧的 txt 文件下载数据,对其进行编辑,然后将其以新的形式保存在新的 txt 文件中。
例如旧文件如下所示:
新行中的所有数据。
转换后的新文件应如下所示:
意味着整数之后的所有数据都应该在一个新的不同的行中。
我的代码包含在下面。现在我有一个字符串作为 buf,没有任何白色符号:
我想按照示例中的方式拆分它。
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main () {
string fileName;
cout << "Enter the name of the file to open: ";
cin >> fileName;
ifstream old_file(fileName + ".txt");
ofstream new_file("ksiazka_adresowa_nowy_format.txt");
vector <string> friendsData;
string buf;
string data;
while(getline(old_file, data)) {
friendsData.push_back(data);
}
for(int i=0; i<friendsData.size() ; ++i) {
buf+=friendsData[i] + '|';
}
new_file << buf;
old_file.close();
new_file.close();
return 0;
}
您可以尝试将当前字符串解析为 int std::stoi;如果成功,您可以在 buf
中添加一个换行符。这并没有完全拆分字符串,但是当您将它发送到您的文件时会产生您正在寻找的效果,并且可以很容易地调整以实际切割字符串并将其发送到一个向量。
for(int i=0; i<friendsData.size() ; ++i) {
try {
//check to see if this is a number - if it is, add a newline
stoi(friendsData[i]);
buf += "\n";
} catch (invalid_argument e) { /*it wasn't a number*/ }
buf+=friendsData[i] + '|';
}
(此外,我确定您已经从其他人那里听说过,但是 you shouldn't be using namespace std
)
我想知道如何在整数之前拆分字符串。可能吗? 我写了一个转换器,可以从旧的 txt 文件下载数据,对其进行编辑,然后将其以新的形式保存在新的 txt 文件中。
例如旧文件如下所示:
新行中的所有数据。 转换后的新文件应如下所示:
意味着整数之后的所有数据都应该在一个新的不同的行中。
我的代码包含在下面。现在我有一个字符串作为 buf,没有任何白色符号:
我想按照示例中的方式拆分它。
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main () {
string fileName;
cout << "Enter the name of the file to open: ";
cin >> fileName;
ifstream old_file(fileName + ".txt");
ofstream new_file("ksiazka_adresowa_nowy_format.txt");
vector <string> friendsData;
string buf;
string data;
while(getline(old_file, data)) {
friendsData.push_back(data);
}
for(int i=0; i<friendsData.size() ; ++i) {
buf+=friendsData[i] + '|';
}
new_file << buf;
old_file.close();
new_file.close();
return 0;
}
您可以尝试将当前字符串解析为 int std::stoi;如果成功,您可以在 buf
中添加一个换行符。这并没有完全拆分字符串,但是当您将它发送到您的文件时会产生您正在寻找的效果,并且可以很容易地调整以实际切割字符串并将其发送到一个向量。
for(int i=0; i<friendsData.size() ; ++i) {
try {
//check to see if this is a number - if it is, add a newline
stoi(friendsData[i]);
buf += "\n";
} catch (invalid_argument e) { /*it wasn't a number*/ }
buf+=friendsData[i] + '|';
}
(此外,我确定您已经从其他人那里听说过,但是 you shouldn't be using namespace std
)