2017-09-01 9 views
0

私は、ユーザーがコンソールに入力している間にテキストを色付けすることが可能かどうか疑問に思っていました。私のコンソールをよりカラフルにしたい。ユーザーの入力(getlineから取得)を入力中にカラフルにする方法を教えてください。

私はcoutのテキストの色ライブラリを使用していますが、ユーザーが文字列を入力している間にテキストの色を付けることができるかどうかを知りたがっていますか? Linux/MacOSで

+0

はい可能ですが使用しているIDEによって異なります –

+0

https://stackoverflow.com/questions/45526532/c-xcode-how-to-output-color/45526627 #45526627 –

+0

私はVisual Studio 2017を使用しています。 –

答えて

1

だけで、次のようにしてください:

#include <iostream> 

int main() 
{ 
    std::string foo; 
    std::cout << "Type your text here : \x1B[31m"; 
    std::cin >> foo; 
    std::cout << "\x1B[0m" << std::endl; 
    std::cout << "Your input : " << foo << std::endl; 
    return (0); 
} 

リッテ説明:

あなたが以下のいずれかに特定の文字列を入力します。

"\x1B[31m" (red) 
"\x1B[32m" (green) 
"\x1B[33m" (yellow) 
"\x1B[34m" (blue) 
"\x1B[35m" (magenta) 
"\x1B[36m" (cyan) 
"\x1B[0m" (reset) 

それは(termcapを使用します。端末の能力を表す)、その後に書き込まれるすべての出力の色を変更します。 これらのtermcapを使用した後にリセットすることを忘れないでください。そうしないと、ターミナルはリセットするまで選択した色に固執します。

PS:Windowsで動作するかどうかわかりません。

2

あなたはそうするようにWindowsコンソールAPIを使用することができます。

HANDLE console_output = ::GetStdHandle(STD_OUTPUT_HANDLE); 
::SetConsoleTextAttribute(console_output, FOREGROUND_GREEN); 

std::string buffer; 
std::getline(std::cin, buffer); 
std::cout << buffer << std::endl; 

::CloseHandle(console_output); 

入力テキストの色が緑色になります。また、windows.hを含めることを忘れないでください

関連する問題