在每行的开头和结尾添加文本

时间:2013-12-31 11:55:13

标签: c++ codeblocks

我对编程有些新意,当人们搜索某些东西时,我正在制作一个过滤器。我用Code :: Blocks编写代码。 举个例子,我拿了一些小宠物:

Ivysaur
Venusaur
Charmander
Charmeleon
Charizard
Squirtle
Wartortle
Blastoise
Caterpie
Metapod

我想将这些小宠物中的每一个添加到我的变量“vector string pokeList”中。

vector<string> pokeList;
pokeList.push_back("Bulbasaur");
Ivysaur
Venusaur
Charmander
Charmeleon
Charizard
Squirtle
Wartortle
Blastoise
Caterpie
Metapod

如何添加“pokeList.push_back(”“);”对于每一行而不是“手动”,因为“手动”添加700个小精灵真的很长... PS:我不想用里面的列表创建一个.txt文件。

Thnaks。

3 个答案:

答案 0 :(得分:2)

如果Code :: Blocks使用的是足够现代的编译器,则可以通过使用该语言中的较新功能来解决此问题,而无需IDE技巧。在C ++ 11中,您的示例可以写为:

auto pokeList = vector<string>{
    "Bulbasaur",
    "Ivysaur",
    "Venusaur",
    "Charmander",
    "Charmeleon",
    "Charizard",
    "Squirtle",
    "Wartortle",
    "Blastoise",
    "Caterpie",
    "Metapod"
};

http://ideone.com/b45OeD

答案 1 :(得分:2)

你从哪里获得口袋妖怪名单?如果您有一个包含所有名称的文件,您只需阅读该文件:

#include <vector>
#include <string>
#include <iostream>
#include <fstream>

int main()
{
    std::vector<std::string> pokeList;

    std::ifstream pokeFile("your file path/name here");
    if (pokeFile.is_open())
    {
        std::string str;
        while (std::getline(pokeFile, str))
        {
            pokeList.push_back(str);
        }

    } else
    {
        std::cout << "Unable to open file";
    }

}

现在您可以从外面编辑列表。

p.s建议不要在代码中放置这样的大型静态列表,更容易将它放在单独的文件中。

答案 2 :(得分:0)

您可以使用指向这些字符串文字的指针创建一个静态数组,并使用它来初始化该向量。例如

#include <vector>
#include <string>
#include <iterator>

const char * pokemons[] = 
{ 
   "Ivysaur",
   "Venusaur",
   /* other pokemons */ 

   "Metapod"
};

int main()
{
   std::vector<std::string> pokeList( std::begin( pokemons ), std::end( pokemons ) );
}

您可以将数组定义放在单独的头文件中。