2016-12-29 30 views
-5

如何在C++中爲特定文本着色?如: 這的例子。 在上面我想顏色「是」。我怎樣才能做到這一點?如何在C++中爲指定的文本着色

+0

是什麼聲音與色彩之間的關係? – IAmBlake

+1

您的標題似乎與您的問題的內容沒有多大關係。一個是談論聲音,另一個是(據我所知)談論着色控制檯輸出。請澄清這兩件事之間的關係,或挑一個問。因爲它是,你的問題即將被關閉爲*不清楚你問什麼。* – jaggedSpire

+0

對不起,我會糾正它 –

回答

1

你不能這樣做(播放聲音)標準C++14,因爲標準不知道聲音相關的東西。您需要一些額外的(通常是操作系統特定的)庫,例如SFMLQt;兩者都可以在多個系統上運行,並抽取operating-system特定服務。

如果您將ANSI escape codes用於終端,則可以嘗試BELL character

請注意,您的用戶可能甚至沒有任何方法可以聽到聲音(例如他的計算機或聾啞用戶缺少 - 或禁用揚聲器)。

2

「C++是一種語言」......說「如何在C++中播放聲音或在C++中添加聲音」本身沒有意義。爲了播放聲音,您需要一個操作系統API。那麼會發生什麼:使用C++,您可以訪問操作系統API(您正在使用的特定Windows,Mac,Linux),然後播放聲音。

但是,圍繞操作系統API的解決方案(包裝)將使這項工作更容易。例如,SDL Framework與平臺無關,因爲它將爲您處理操作系統。 (適用於Windows,Mac,Linux等)

這是使用SDL2框架播放聲音的示例。看一看this code example for SDL 2(沒有SDL_mixer)或this tutorial for SDL 1.2(其具有相同功能的用於音頻部分):

static Uint8 *audio_chunk; 
static Uint32 audio_len; 
static Uint8 *audio_pos; 

/* The audio function callback takes the following parameters: 
    stream: A pointer to the audio buffer to be filled 
    len:  The length (in bytes) of the audio buffer 
*/ 
void fill_audio(void *udata, Uint8 *stream, int len) 
{ 
    /* Only play if we have data left */ 
    if (audio_len == 0) 
     return; 

    /* Mix as much data as possible */ 
    len = (len > audio_len ? audio_len : len); 
    SDL_MixAudio(stream, audio_pos, len, SDL_MIX_MAXVOLUME); 
    audio_pos += len; 
    audio_len -= len; 
} 

/* Load the audio data ... */ 

;;;;; 

audio_pos = audio_chunk; 

/* Let the callback function play the audio chunk */ 
SDL_PauseAudio(0); 

/* Do some processing */ 

;;;;; 

/* Wait for sound to complete */ 
while (audio_len > 0) { 
    SDL_Delay(100);   /* Sleep 1/10 second */ 
} 
SDL_CloseAudio(); 

同樣,這僅僅是一個示例。也許你只是想玩一個「波」文件,而不用擔心波緩衝區等等等等......

例如,在Windows上,您有PlaySound()函數。有了這個,你可以給文件名(.wav),就是這樣。 https://msdn.microsoft.com/en-us/library/windows/desktop/dd743680(v=vs.85).aspx

對於其他平臺,類似的東西可能存在...好運氣;-)

+1

代碼參考使用舊的SDL-1.2庫。應始終首選SDL2。 –

+0

我認爲API的這部分沒有改變......我的答案只是一些通用示例,不應該被視爲一個具體的具體解決方案。目標是顯示「有API用於此」;-) –

+0

感謝您的編輯;-) –

相關問題