为什么在这段代码中可以工作
#include "iostream"
#include "vector"
#include "string.h"
using namespace std;
int main()
{
vector<string> myvect;
string temp;
string temp2;
for (int i = 0; i < 2; i++)
{
cin >> temp;
myvect.push_back(temp);
}
for (int i = 0; i < 2; i++)
{
temp2 = myvect[i];
cout << temp2 << endl;
}
}
当执行temp2 = myvect[i]时,它放入整个字符串。但当我执行temp2 = temp[i]时,它只放入字符串的一个字符。
两者不应该给予相同的结果。不是指向字符串第一个元素的字符串。
3条答案
按热度按时间bfhwhh0e1#
你有两个不同的容器。一个是
std::string
,它存储char*
或一个字符数组,另一个是std::vector
,在您的情况下,它存储一个std::string
数组。0vvn1miw2#
执行temp2 = myvect[i],它将整个字符串放入
temp2
是一个字符串,而myvect
是一个包含字符串元素的向量。当你用方括号索引myvect
时,你得到的是myvect
的元素,i。e.串。do temp2 = temp[i]它只输入字符串的一个字符
temp
是一个字符串,所以当你用方括号索引它时,你会得到它的元素类型i。字符(字符串是C++中一种特殊的向量,它的元素是字符)。总之,您可能会混淆
string
和vector<string>
的概念。当然,它们都是向量,但其中一个的元素是字符串,另一个的元素是字符。希望对你有帮助。
g6ll5ycj3#
当您这样做时:
它将用用户输入填充
temp
(这里有更多内容),这意味着temp
的内容将被替换为新的字符串(在您的情况下是3次)。然后,如果您这样做:
这将读取最后一个输入的前三个字符(这也是不安全的,因为输入字符串可以更小)。
例如,要连接前3个用户输入:
我不太明白你的意图,如果你只想考虑单个字符,你可能想使用
char
而不是string
。