문제
도움이되는 답변을 얻은 후 여기, 나는 또 다른 문제가 발생했습니다. 열에 둘 이상의 문자열을 표시하고 싶습니다.
Come here! where? not here!
그러나 대신 얻습니다
Come here! where? not here!
코드를 사용할 때
cout << left << setw(30) << "Come here!" << " where? " << setw(20) << "not here!" << endl;
나는 두 열의 너비에 두 줄의 두 줄을 포함 할 수 있다고 확신했지만, 열의 너비를 얼마나 크게 설정하더라도 오류는 여전히 존재합니다.
해결책
언급 한 바와 같이 setw()
다음 입력에만 적용되며 두 입력에 적용하려고합니다.
문자 그대로 상수 대신 변수를 사용할 수있는 기회를 제공하는 다른 제안에 대한 대안 :
#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;
int main()
{
stringstream ss;
ss << "Come here!" << " where?";
cout << left << setw(30) << ss.str() << setw(20) << "not here!" << endl;
return 0;
}
다른 팁
각 열의 내용을 여러 연속 문자열 대신 단일 문자열로 인쇄해야합니다. setw()
다음 문자열을 인쇄 할 형식 만 형식화합니다. 따라서 인쇄하기 전에 줄을 연결해야합니다. string::append()
또는 +
:
cout << left << setw(30) << (string("Come here!") + " where? ") << setw(20) << "not here!" << endl;
setw
다음 문자열 만 포함하므로 연결해야합니다.
cout << left << setw(30) << (string("Come here!") + string(" where? ")) << setw(20) << "not here!" << endl;
제휴하지 않습니다 StackOverflow