Windows에서 응용 프로그램의 배너를 만들려고합니다.C++ 멀티 라인 문자열이 예상대로 작동하지 않습니다.
// C Libraries:
#include <string>
#include <iostream>
#include <algorithm>
// Namespaces:
using namespace std;
const char *BANNER[] = R"BANNER(
.-') _ .-')
( OO)) (OO).
,--. ,--./ '._ ,-.-') ,--. ,-.-') (_)---\_)
| | | | |'--...__)| |OO) | |.-') | |OO)/ _ |
| | | .-')'--. .--'| | \ | | OO) | | \\ :` `.
| |_|(OO) | | | |(_/ | |`-' | | |(_/ '..`''.)
| | | `-'/| | ,| |_.'(| '---.',| |_.'.-._) \
(' '-'(_.-' | | (_| | | |(_| | \ /
`-----' `--' `--' `------' `--' `-----')BANNER";
char* getCmdOption(char ** begin, char ** end, const std::string & option)
{
char ** itr = find(begin, end, option);
if (itr != end && ++itr != end)
{
return *itr;
}
return 0;
}
bool cmdOptionExists(char** begin, char** end, const std::string& option)
{
return find(begin, end, option) != end;
}
int main(int argc, char * argv[])
{
printf("%s\n", BANNER);
if(cmdOptionExists(argv, argv+argc, "-h"))
{
cout << "Help Menu";
}
if (cmdOptionExists(argv, argv + argc, "-a"))
{
cout << "Adobe";
}
return 0;
}
난 당신이 여러 줄 문자열을 생성하는 구문 R"(<string here>)";
또는 R"BANNER(<string here>)BANNER";
를 사용할 수있는 다중 스레드 및 여러 웹 사이트에서 읽었습니다. 그러나 나는 다음과 같은 오류가 얻을이 코드를 컴파일에 도착했을 때 :
utilis.cpp(9) : error C2001: newline in constant
utilis.cpp(9) : error C2065: 'R' : undeclared identifier
utilis.cpp(9) : error C2143: syntax error : missing ';' before 'string'
utilis.cpp(9) : error C2059: syntax error : 'string'
utilis.cpp(10) : error C2015: too many characters in constant
utilis.cpp(10) : error C2059: syntax error : ')'
utilis.cpp(11) : error C2059: syntax error : ')'
utilis.cpp(12) : error C2015: too many characters in constant
utilis.cpp(12) : error C2059: syntax error : ')'
utilis.cpp(12) : warning C4129: '_' : unrecognized character escape sequence
utilis.cpp(12) : error C2001: newline in constant
utilis.cpp(12) : error C2015: too many characters in constant
utilis.cpp(13) : error C2015: too many characters in constant
utilis.cpp(13) : error C2059: syntax error : ')'
utilis.cpp(13) : error C2059: syntax error : ')'
utilis.cpp(14) : warning C4129: ' ' : unrecognized character escape sequence
utilis.cpp(14) : error C2001: newline in constant
utilis.cpp(14) : error C2015: too many characters in constant
utilis.cpp(15) : error C2018: unknown character '0x60'
utilis.cpp(15) : error C2015: too many characters in constant
utilis.cpp(15) : error C2018: unknown character '0x60'
utilis.cpp(15) : error C2137: empty character constant
utilis.cpp(16) : error C2018: unknown character '0x60'
utilis.cpp(16) : error C2015: too many characters in constant
utilis.cpp(17) : error C2015: too many characters in constant
utilis.cpp(17) : warning C4129: ' ' : unrecognized character escape sequence
utilis.cpp(17) : error C2001: newline in constant
utilis.cpp(17) : error C2015: too many characters in constant
utilis.cpp(18) : error C2018: unknown character '0x60'
utilis.cpp(18) : error C2015: too many characters in constant
utilis.cpp(18) : error C2018: unknown character '0x60'
utilis.cpp(18) : error C2015: too many characters in constant
utilis.cpp(18) : error C2018: unknown character '0x60'
utilis.cpp(18) : error C2015: too many characters in constant
utilis.cpp(18) : error C2001: newline in constant
utilis.cpp(21) : error C2143: syntax error : missing ')' before '{'
utilis.cpp(21) : error C2143: syntax error : missing ';' before '{'
utilis.cpp(21) : error C2447: '{' : missing function header (old-style formal list?)
내가 여러 줄 문자열을 만들 수없는 지점에 잘못하고 있어요 무엇을?
나는 또한 시도했다 : cout << BANNER
과 같은 출력을 얻을. 내게는 to many characters in constant
오류가 의미가 없습니다. 큰 광경을 본 적이 있기 때문에, 예를 들어 here을 참조하십시오.
이 스레드 또는 여러 웹 사이트 중 적어도 하나에 대한 링크를 제공 할 수 있습니까? 나는 전에 이것에 대해 들어 본 적이 없다. – user463035818
그건 원시 문자열이다. –
C++ 유형을 사용하면 왜 std :: string을 사용하지 않는가? – Papipone