Visual StudioにおけるC++の文字化け

実現したいこと

プログラミング初学者です。
日本株のデータ収集および分析のためのプログラムを作成したいと思い、
kabuステーションAPI  https://kabucom.github.io/kabusapi/reference/index.html
を用いて、C++プログラムの開発を試みています。
トークンを取得することは出来たのですが、そのトークンを用いて先物銘柄コードの取得を取得を試みた際に、実行結果に文字化けが発生してしまいました。

発生している問題・分からないこと

実行結果の一部が文字化けしております。(Tokenの値は一部変更しております。)

API Response: {"ResultCode":0,"Token":"f4efee8659b7d089173f9a51bd"}
Retrieved API Token: f4efee865bea4cc9b7d0a51bd
API Response: {"Symbol":"169090018","SymbolName":"譌・邨悟ケウ蝮・・迚ゥ 24/09"}
Retrieved Future Symbol: {"Symbol":"169090018","SymbolName":"譌・邨悟ケウ蝮・・迚ゥ 24/09"}

該当のソースコード

TKO.cpp

1#include <iostream> 2#include "token_fetcher.h" 3#include "future_symbol_fetcher.h" 4 5int main() { 6 std::string apiPassword = ""; /*blank for public access*/ 7 TokenFetcher tokenFetcher(apiPassword); 8 9 std::string token = tokenFetcher.getApiToken(); 10 std::cout << "Retrieved API Token: " << token << std::endl; 11 12 FutureSymbolFetcher futureSymbolFetcher(token); 13 std::string futureCode = "NK225"; 14 std::string derivMonth = "202409"; 15 16 std::string futureSymbol = futureSymbolFetcher.getFutureSymbol(futureCode, derivMonth); 17 std::cout << "Retrieved Future Symbol: " << futureSymbol << std::endl; 18 19 return 0; 20} 21 22 23} 24

future_symbol_fetcher.cpp

1#include "future_symbol_fetcher.h" 2#include <iostream> 3#include <cstring> 4#include <cstdlib> 5 6FutureSymbolFetcher::FutureSymbolFetcher(const std::string& apiToken) : apiToken(apiToken) {} 7 8FutureSymbolFetcher::~FutureSymbolFetcher() {} 9 10size_t FutureSymbolFetcher::WriteMemoryCallback(void* contents, size_t size, size_t nmemb, void* userp) { 11 size_t realsize = size * nmemb; 12 struct MemoryStruct* mem = (struct MemoryStruct*)userp; 13 14 char* ptr = (char*)realloc(mem->memory, mem->size + realsize + 1); 15 if (ptr == NULL) { 16 std::cerr << "Not enough memory (realloc returned NULL)\n"; 17 return 0; 18 } 19 20 mem->memory = ptr; 21 std::memcpy(&(mem->memory[mem->size]), contents, realsize); 22 mem->size += realsize; 23 mem->memory[mem->size] = 0; 24 25 return realsize; 26} 27 28std::string FutureSymbolFetcher::getFutureSymbol(const std::string& futureCode, const std::string& derivMonth) { 29 CURL* curl; 30 CURLcode res; 31 struct curl_slist* headers = NULL; 32 struct MemoryStruct chunk; 33 34 chunk.memory = (char*)malloc(1); 35 chunk.size = 0; 36 37 curl_global_init(CURL_GLOBAL_DEFAULT); 38 curl = curl_easy_init(); 39 40 if (curl) { 41 std::string apiUrl = apiUrlBase + "?FutureCode=" + futureCode + "&DerivMonth=" + derivMonth; 42 43 headers = curl_slist_append(headers, ("X-API-KEY: " + apiToken).c_str()); 44 45 curl_easy_setopt(curl, CURLOPT_URL, apiUrl.c_str()); 46 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); 47 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); 48 curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&chunk); 49 50 res = curl_easy_perform(curl); 51 52 if (res != CURLE_OK) { 53 std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl; 54 } 55 else { 56 std::cout << "API Response: " << chunk.memory << std::endl; 57 } 58 59 curl_easy_cleanup(curl); 60 curl_slist_free_all(headers); 61 } 62 63 curl_global_cleanup(); 64 65 std::string futureSymbol(chunk.memory); 66 free(chunk.memory); 67 68 return futureSymbol; 69} 70

試したこと・調べたこと

上記の詳細・結果

・構成プロパティ>C/C++>コマンドライン>追加のオプション
に「/utf-8」を追加しました。
→実行結果に変化なし

・future_symbol_fetcher.cppについて、
ファイル>名前を付けて future_symbol_fetcher.cpp を保存>エンコード付きで保存>
にて、エンコードをUnicode(UTF-8 シグネチャ付き) コードページ 65001で保存
→実行結果に変化なし

補足

main.cppファイルのソースコードをすべてコメントアウトし、以下のプログラムを実行した場合にも、文字化けが発生しています。
//#include <iostream>
//
//int main() {
// std::cout << "有難うございます" << std::endl;
//

しかし、別のプロジェクトを立ち上げ、上記のプログラムを実行した場合は文字化けが発生していません。

コメントを投稿

0 コメント