C++读取txt文件,并仅将其中的中文字符串保存到vector<string>
时间: 2023-08-31 13:32:19 浏览: 72
### 回答1:
下面是一个示例代码:
```
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <locale>
using namespace std;
int main()
{
// 文件名
string fileName = "text.txt";
// 创建文件输入流
ifstream file(fileName);
// 设置locale,支持中文字符
file.imbue(locale("zh_CN.UTF-8"));
// 创建字符串变量
string line;
// 创建vector
vector<string> chineseStrings;
// 循环读取文件中的每一行
while (getline(file, line)) {
// 判断是否是中文字符串
if (line.find("[\u4e00-\u9fa5]+") != string::npos) {
// 如果是,添加到vector中
chineseStrings.push_back(line);
}
}
// 关闭文件
file.close();
// 输出vector中的所有字符串
for (string str : chineseStrings) {
cout << str << endl;
}
return 0;
}
```
请注意,上面的代码只是示例代码。在实际使用中可能需要进行更多的错误处理和调整。
### 回答2:
要读取一个txt文件并保存其中的中文字符串到一个vector<string>,你可以按照以下步骤进行操作:
1. 引入必要的头文件,包括iostream(输入输出流)、fstream(文件流)和vector(向量容器):
```cpp
#include <iostream>
#include <fstream>
#include <vector>
```
2. 创建一个函数来实现该功能:
```cpp
vector<string> getChineseStringsFromTxt(const string& filePath) {
vector<string> chineseStrings;
ifstream file(filePath);
if (file) {
string line;
while (getline(file, line)) {
string chineseString;
for (char c : line) {
if (isChineseChar(c)) { //判断字符是否为中文字符
chineseString += c;
}
}
if (!chineseString.empty()) {
chineseStrings.push_back(chineseString);
}
}
file.close();
}
else {
cout << "无法打开文件: " << filePath << endl;
}
return chineseStrings;
}
```
3. 创建一个辅助函数来判断字符是否为中文字符:
```cpp
bool isChineseChar(char c) {
return c >= -127 && c <= -2;
}
```
4. 在主函数中调用该函数并输出结果:
```cpp
int main() {
vector<string> result = getChineseStringsFromTxt("example.txt");
for (const string& chineseString : result) {
cout << chineseString << endl;
}
return 0;
}
```
以上是一个简单的实现方式,你可以根据自己的需求进行修改和调整。请记得首先将文本文件放在正确的位置,并传递正确的文件路径给函数。
### 回答3:
要读取txt文件并仅将其中的中文字符串保存到vector<string>,可以按照以下步骤进行:
1. 打开txt文件:使用C++中的fstream库,创建一个输入文件流对象,并使用open函数打开txt文件。例如:
```cpp
#include <fstream>
#include <string>
#include <vector>
std::ifstream file("example.txt");
if (!file.is_open()) {
// 文件打开失败,处理错误情况
}
```
2. 逐行读取文件内容:使用getline函数,循环读取文件的每一行。例如:
```cpp
std::string line;
while (std::getline(file, line)) {
// 处理每一行的内容
}
```
3. 提取中文字符串:对于每一行的内容,使用循环逐个字符判断是否为中文字符。可以使用C++中的ctype库中的iswalpha函数来判断一个字符是否为中文字符。若是中文字符,则将其添加到vector<string>中。例如:
```cpp
std::vector<std::string> chineseStrings;
for (char c : line) {
if (iswalpha(c)) {
std::string chCharacter(1, c); // 将字符转为字符串
chineseStrings.push_back(chCharacter);
}
}
```
4. 关闭文件:使用close函数关闭打开的文件流对象。例如:
```cpp
file.close();
```
以上就是将txt文件中的中文字符串保存到vector<string>的方法。最后,可以对vector<string>中保存的中文字符串进行进一步处理或使用。