c – 有没有更好的方法来打印cout最多N个字符的字符串?

-edit-我发送的是二进制而不是字符串.我的测试是使用html页面所以在这个例子中我只使用一个字符串但我的问题是关于二进制,向量和使用ostream进行调试.我让这清楚了一些混乱.

我有以下代码:

cout << string(&v[0]).substr(0, len);

有没有更好的方法来打印字符串v与cout长度len?我想做v [len] = 0但是我的一个断言被抛出,大小为1.我的代码是:

vector<char> v;
v.reserve(1024*16); //required
v.resize(1); //so we can do &v[0]
recv(sockfd, &v[0], v.capacity(), 0);
while (l > 0)
{
    cout << string(&v[0]).substr(0, l);
    recv(sockfd, &v[0], v.capacity(), 0);
}
cout << "the size is " << v.size();
最佳答案
您可以在cout对象上使用ostream :: write方法:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
  vector<char> test;
  test.push_back('a');
  test.push_back('b');
  test.push_back('c');

  cout.write(&test[0], 3);
  cout << endl;
}

输出:

abc

因为ostream :: write返回一个ostream&包含*这个,你甚至可以做到

cout.write(&test[0], 3) << endl;

但我不确定这实际上是否更好(或更清晰).

转载注明原文:c – 有没有更好的方法来打印cout最多N个字符的字符串? - 代码日志