为什么std :: cout会在输出中添加return或换行符?

时间:2017-01-25 04:37:41

标签: c++ vector stringstream

使用#include <iostream> #include <sstream> #include <string> #include <vector> #include <algorithm> int main() { int wordCount(9); std::vector<std::string> v(wordCount); std::vector<std::string>::iterator it; std::string tStr; std::string myStr = "the quick fox jumped over the lazy brown dogs"; std::stringstream ss(myStr); std::cout << "Sentence broken into vector:" << std::endl; for (int i=0; i<wordCount; ++i) { ss >> tStr; v.push_back(tStr); } for (it=v.begin(); it != v.end(); ++it) std::cout << *it << std::endl; std::cout << std::endl; return 0; } 从句子中提取单词。

每个单词都添加了换行符,我看不出原因;你能?谢谢你的帮助。基思:^)

pickledEgg $ g++ -std=c++11 -g -Og -o io2 io2.cpp
pickledEgg $ ./io2
Sentence broken into vector:









the
quick
fox
jumped
over
the
lazy
brown
dogs

编译,运行和输出。注意额外的换行符。

   static ArrayList<Integer> var_Pposition = new ArrayList<>()

2 个答案:

答案 0 :(得分:6)

使用此行std::vector<std::string> v(wordCount);创建向量时,您创建了wordCount个空条目。当您致电push_back添加单词时,您会在向量的末尾添加单词。迭代向量时,首先使用新行打印空条目,然后打印好数据。

答案 1 :(得分:4)

相当简单:

//std::vector<std::string> v(wordCount);
std::vector<std::string> v;

我认为你想使用std::vector::reserve

  

元素是连续存储的,这意味着元素可以   不仅可以通过迭代器访问,还可以使用常规偏移   指向元素的指针。这意味着指向一个元素的指针   vector可以传递给任何需要指针的函数   数组的元素。   http://en.cppreference.com/w/cpp/container/vector

因为std::vector::push_back会将值附加到向量中,从而导致更改它的大小。如果处理足够大的矢量,则应考虑使用std::vector::reserve

您可以在http://en.cppreference.com/w/cpp/container/vector/reserve中看到差异。