0

我正在尝试读取代码并对其进行格式化,以便它在某个点之后切断并转到新行。起初,我试图简单地继续显示连续的字符,并在此时读取的字符数量超过限制后使其进入换行符。但是,如果某个单词超出限制,我需要让该单词开始新行由于我完全不知道如何仅使用字符来做到这一点,因此我决定尝试使用字符串数组。我的代码如下

char ch;
string words[999];
//I use 999 because I can not be sure how large the text file will be, but I doubt it   would be over 999 words
string wordscount[999];
//again, 999. wordscount will store how many characters are in the word
int wordnum = 0;
int currentnum = 0;
//this will be used later
while (documentIn.get(ch))
{
if (ch != ' ')
//this makes sure that the character being read isn't a space, as spaces are how we differentiate words from each other
{
cout << ch;
//this displays the character being read

在我的代码中,我想将所有字符“保存”到一个字符串中,直到该字符是一个空格。我不知道该怎么做。有谁可以帮我离开这里吗?我想它会是这样的;

words[wordnum] = 'however i add up the characters'
//assuming I would use a type of loop to keep adding characters until I reach a 
//space, I would also be using the ++currentnum command to keep track of how
//many characters are in the word
wordscount[wordnum] = currentnum;
++wordnum;
4

2 回答 2

0

我不知道你真正想做什么。

如果你想从文件中恢复每一行,你可以这样做:

std::ifstream ifs("in");
std::vector<std::string> words;
std::string word;
while (std::getline(ifs, word))
{
    words.push_back(word);
}
ifs.close();

函数 std::getline() 不会省略空格,例如 ' ', '\t' ,而它将通过 ifs >> 单词进行反转换。

于 2013-10-06T11:22:12.333 回答
0

使用输入文件流循环遍历将它们添加到向量的单词,然后 vector.size() 将是单词计数。

std::ifstream ifs("myfile.txt");

std::vector<std::string> words;
std::string word;
while (ifs >> word)
   words.push_back(word);

默认情况下会跳过空白,while 循环将继续,直到到达文件末尾。

于 2013-10-06T10:03:12.673 回答