如何将字符串添加到字符串数组中

时间:2016-04-04 04:03:46

标签: c++ arrays string

我创建了一个程序,将英语单词转换为pig Latin(我班级的一部分)。目前它只转换一个单词:“hello” - >“elloyay”。

出于我自己的好奇心,我想让可能性读取由空格分隔的多个单词,然后相应地转换这些单词中的每一个。

从技术上讲,使用substr在两个连续空格之间抓取一个单词。输入将被substr分隔为单独的单词。我的make_pig_latin解析器将解析一次中的每个单词,并将替换string array中的相应单词。

例如:输入 “hello yellow fellow”将导致输出 “elloyay ellowyay ellowyay”

如果我完成此任务的编码在正确的轨道上,任何人都可以告诉我。我一直在运行时崩溃,我认为这是由于没有正确创建字符串数组。但我不完全确定。

任何帮助都将不胜感激。

int main()
{
    string word;

    string word_List[] = { word };

    cout << "Enter your story (Please include spaces between each word): ";
    getline(cin, word);

    char c = word[0];

    int i = 0;
    int j = 0;
    int k = i;
    int l = 0;
    while (i < (word.length() - 1))
    {
        if (word[i] = '\n')
        {
            string new_Word = word.substr(j, k);
            string test_Pig = make_Pig_Latin(new_Word);

            word_List[l] = test_Pig;
            l == l + 1;
            j == i + 1;
            i == k + 1;
        }
        if (word[i] = '.')
        {
            i = word.length() + 1;
        }
    }
    cout << "The Story In Pig Latin Is " << word_List << endl;

    cin.ignore();
    cin.get();
    return EXIT_SUCCESS;
}

要添加的用户的额外信息:完整的错误行,使用的编译器+版本,使用的操作系统。

1 个答案:

答案 0 :(得分:2)

if (word[i] = '\n')会将word[i]设置为'\n'。您可能想要测试if(word[i] == '\n')...

但是,您当时正在输入一行,中间没有新行。

您可以通过测试空格if(word[i] == ' ')...

来打破文本

碰巧有一种更简单的方法。使用std::stringstream提取单词。使用std::vector来生成字符串数组(或向量)。例如:

#include <iostream>
#include <string>
#include <vector>
#include <sstream>

int main()
{
    std::string sentence = "How do you add strings to an array of strings";
    std::vector<std::string> vs;
    std::stringstream iss(sentence);

    std::string word;
    while (std::getline(iss, word, ' '))
        vs.push_back(word);

    for (auto wrd : vs)
        cout << wrd << "\n";

    return 0;
}