0

曲に関する情報を含む配列を出力する必要がある割り当てがあります。私が抱えている問題は、出力のフォーマットです。私の割り当てでは、表示される各フィールドの長さを指定していますが、出力を制限するための適切な方法を見つけることができません。たとえば、曲のタイトルが21文字で、18文字である必要がある場合、指定された18文字を超えないようにするにはどうすればよいですか。setw()関数を使用してすべてを正しく配置していますが、出力はまったく制限されていません。

4

3 に答える 3

0

文字列から長さ18文字の部分文字列を取得し、それを出力できます。

http://www.cplusplus.com/reference/string/string/substr/

例:

#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str="We think in generalities, but we live in details.";
  if(str.length()<=18) cout << str << endl;
  else cout << str.substr(0,15) << "..." << endl;
  return 0;
}
于 2013-03-24T21:43:07.067 に答える
0

string::resizeを使用してc++文字列のサイズを変更できます。

// resizing string
#include <iostream>
#include <string>

int main ()
{
  std::string str ("I like to code in C");
  std::cout << str << '\n';

  unsigned sz = str.size();

  .resize (sz+2,'+');
  std::cout << str << '\n'; //I like to code in C++

  str.resize (14);
  std::cout << str << '\n';//I like to code
  return 0;
}
于 2013-03-24T21:44:04.663 に答える
0

元の文字列を変更しないようにする場合。

string test("http://www.cplusplus.com/reference/string/string/substr/");
string str2 = test.substr(0,18);
cout<<str2 <<endl;

とにかく残りのテストが必要ない場合。

string test("http://www.cplusplus.com/reference/string/string/erase/");
test.erase(18);  // Make sure you don't go out of bounds here.
cout<<test<<endl;
于 2013-03-24T21:44:44.373 に答える