C++ C++;ifstream帮助(简单)

C++ C++;ifstream帮助(简单),c++,file,input,C++,File,Input,我试图从一个.txt文件中获取一些名称,并将它们添加到一个char数组中,但奇怪的事情发生了。以下是我的代码输入部分: int main() { string namelist[30]; int i=0; string line; ifstream file("C:\\names.txt"); if (file.is_open()) { while ( getline (file,line).good () ) { getline(file,line);

我试图从一个.txt文件中获取一些名称,并将它们添加到一个char数组中,但奇怪的事情发生了。以下是我的代码输入部分:

int main()
{
string namelist[30];
int i=0;
string line;
ifstream file("C:\\names.txt");
if (file.is_open())
{
    while ( getline (file,line).good () )
    {
        getline(file,line);
        cout << line << endl;  // It prints the names normally (it was added for   debugging) //
        namelist[i] = line;
    }
    file.close();
}
cout << namelist;  // Here is the prob.

任何帮助都将不胜感激:)

因为数组的名称是一个指针,请写

for (int i = 0; i < 30; ++i)
    std::cout << namelist[i] << std::endl;
for(int i=0;i<30;++i)

为什么?它的定义中没有一个*,比如:char*namelist[30];好的,谢谢。你是说我应该多读一些关于弦的知识。我想我们不能像chars那样将它们用作列表,对吗?数组是一个隐含指针。它保留一个足够大的内存块,以包含某些数据类型的请求数量,并提供指向第一个元素的指针。当您使用(
namelist[i]
)索引数组时,它与执行指针算术(
*(namelist+i)
)非常相似。底线是
string
对象的数组实际上用作
string*
。字符串数据类型只是一个有几个成员的类。字符数据本身是动态分配的,并由类指向。无论您指定的字符串是什么,数组中的字符串对象的大小都是相同的。@Makis Renieris,std::string它是一个容器(字符),可以动态调整大小,在您声明std::string数组的第三行,换句话说,它是一个具有固定行数(30)的二维字符数组哦,我想我明白了。非常感谢你的回答。几个月前我学了一些Python,在我的脑海里这一切都很简单。。。(用Python的列表)我有很多关于C++中的数据类型的知识。
for (int i = 0; i < 30; ++i)
    std::cout << namelist[i] << std::endl;
#include <algorithm>
#include <iterator>
//...
std::copy(namelist
         , namelist + 30
         , std::ostream_iterator<std::string>(std::cout, "\n")
);