如何在vc ++中显示列表项?

时间:2009-05-26 05:45:10

标签: visual-c++ c++-cli

如何在c ++ cli中的控制台窗口上填充List(字符串)项目。

2 个答案:

答案 0 :(得分:3)

你是否在以下之后或者你想知道如何从控制台输入和存储在字符串中读取(然后存储在我假设的列表中),这是第一种情况,如何在列表中存储字符串(和输出)列表的内容):

#include <iostream>
#include <string>
#include <list>

using std::string;
using std::list;
using std::cout;
using std::endl;

list<string> strlist;

strlist.push_back(string("string one"));
strlist.push_back(string("string two"));
strlist.push_back(string("and so on"));

for (list<string>::iterator it = strlist.begin(); it != strlist.end(); ++it)
{
    std::cout << (*it) << std::endl;
}

注意:列表包含字符串的副本,这意味着当您将字符串分配给列表并从列表中返回字符串时,最终会复制字符串。为了避免这种情况,您可以为字符串分配内存并仅在列表中保留指针:

list<string*> ls;
ls.push_back(new string("string one"));

等等。

这也很有用,以上是更详细的看看如何访问列表元素,在复制算法中这一切都发生在幕后:

copy( strlist.begin(), strlist.end(), ostream_iterator<string>( cout, ", " ) );

答案 1 :(得分:0)

您可以在 中使用 std :: copy ,在 中使用 std :: ostream_iterator 将元素复制到输出如下:

#include <iostream>
#include <string>
#include <list>
#include <algorithm>

int main( int, char*[] )
{
    using namespace std;

    list<string>    mylist;

    mylist.push_back( "String1" );
    mylist.push_back( "String2" );
    mylist.push_back( "String3" );

    copy( mylist.begin(), mylist.end(), ostream_iterator<string>( cout, ", " ) );
}