class Read
{
public:
Read(const char* filename)
:mFile(filename)
{
}
void setString()
{
while(getline(mFile, str, '.'))
{
getline(mFile, str, '.');
str.erase(std::remove(str.begin(), str.end(), '\n'), str.end());
}
}
private:
ifstream mFile;
string str;
};
int main()
{
Read r("sample.txt");
return 0;
}
我的最终目标是解析文件中的每个句子,因此我使用getline将分隔符设置为“。”得到每个句子。我想创建一个句子向量,但我不确定如何这样做。
文件很大,所以会有很多句子。如何为每个句子创建一个向量?
它只是矢量<字符串>海峡?它怎么知道尺寸?
编辑:我添加了一行代码来删除'\ n' 编辑:摆脱!eof答案 0 :(得分:2)
while(!myFile.eof())
getline(mFile, str, '.');
你在哪里找到的?请把它放回去。尝试:
std::vector<std::string> sentences;
while(std::getline(mFile, str, '.'))
sentences.push_back(str);
vector
容器具有.size()
函数,用于返回已填充元素的数量。你应该google“std :: vector”并阅读API中的函数。
答案 1 :(得分:2)
向量是动态数组。您无需担心矢量的大小。您可以使用push_back()
函数在向量中添加元素。我在您的代码中进行了一些更改。请检查这是否适合您..
#include<vector>
using namespace std;
class Read
{
public:
Read(const char* filename)
:mFile(filename)
{
}
void setString()
{
while(getline(mFile, str, '.'))
{
vec.push_back(str);
}
}
private:
ifstream mFile;
string str;
vector<string> vec;
};
int main()
{
Read r("sample.txt");
return 0;
}
答案 2 :(得分:1)
#include <vector>
using namespace std;
...
vector<string> sentences;
sentences.push_back(line);
向量是一个动态数组,当你不断添加句子时它会自行调整大小。如果你知道句子的数量,你可以通过调用:
来提高性能sentences.resize(number of sentences here)