人に聞けない痔の悩み、これでスッキリ >>

すみません、C++初心者です。

C++の練習をしていて

// hello2.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include <iostream>
using namespace std;


int main()
{
cout<<"日本語"<<endl;
return 0;
}

というコードを書きました。

しかし、デバッグなしで開始 をしてみるとエラー表示とともに日本語部分が文字化けして表示されました。

他のサイトとかではUTF-8で保存するとかあり、試してみても直りませんでした。

解決方法を教えていただけると助かります。

「Visual Studio 2017 ビ」の質問画像

質問者からの補足コメント

  • はい、Windows 10になります。

    cppファイルしかshift-jisで保存しなおせなくて、cppファイルだとビルドができませんでした。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/11/08 19:05
  • お返事ありがとうございます。

    プロジェクトの新規作成についてなのですが、

    ファイル→新規作成→Windowsコンソールアプリケーション 

    で作成した後、そのまま先ほどのソースコードを書いたのですが、プロジェクトの作成の仕方に問題があったのでしょうか。

    繰り返し初歩的な質問になってしまいましたが申しわけありません。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/11/09 12:42

A 回答 (5件)

win10


でも正しく動きました。
プロジェクトの一番下の
このプロジェクトのプロパティーを書いてみてください。

場合によっては、
再インストールしたほうが早いかも?
    • good
    • 0

Windous7


Visual Studio Community 2017
の組み合わせでは

日本語

と表示されました。
特別な初期設定はしていません。

ファイル→新規作成→Windowsコンソールアプリケーション
ではなく 
ファイル→新規作成→プロジェクト→Windowsコンソールアプリケーション 
としてあります。

ソースプログラムは
あなたの書いたものを
そのままコピペしました。
    • good
    • 0

コメントを読みました。


 これで動かないとなると初期設定に何か問題があっただろうか?

 インストール方法からプロジェクトの作り方まで。


>Visual Studio Community 2017をインストールする方法(C++の利用を前提に)
http://www.monte-carlo-note.com/2017/05/How-to-i …

 直接の関係はないはずですが、言語パックと何か関係が???

>おやぢチップス (65) : Visual Studio 2017 言語パックのインストール方法
http://blog.goo.ne.jp/ashm314/e/e4d4e8ab26f6126e …
    • good
    • 0

動作確認をしてみました。


 設定の変更はなしで「日本語」と正しく出力しました。
 プロパティから文字コードを確認すると「Unicode 文字セットを使用する」でした。

 理由は不明ですが、最初からプロジェクトを作り直した方が早いかもしれません。
「Visual Studio 2017 ビ」の回答画像2
この回答への補足あり
    • good
    • 0

環境はWindows10でしょうか?



 文字コードを念のためにshift-jisに変更して保存の後にコンパイル・実行を試してみてください。


>windowsの標準の文字コードって何ですか?
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qcout関数を使っているのですが,画面に出力されません。

いつもお世話になっております。今回はC++言語について質問があります。
次のプログラムは画面から入力された文字の数とリターンの数を数えるプ
ログラムです。

/* 入力の文字数を数えるプログラム */
#include <iostream.h>
int main(int argc, char **argv){
char c;
int RETcount = 0; //改行数
int CHARcount = 0; //文字数

while(cin.get(c)){
if(c == '\n'){
++RETcount;
}
else{
++CHARcount;
}
}

cout << "RET:" << RETcount << '\n'; //(1) ここの部分が表示されません。
cout << "CHAR:" << CHARcount << '\n';//(2) ここの部分は表示されます。

return 0;
}

何故か(1)の部分が表示されません(^^;
いきなり(2)の部分が表示されます。
そこで(1)(2)の部分を下記の(3)(4)(5)に書換え

cout << "RET:" << RETcount << '\n'; //(3)
cout << "RET:" << RETcount << '\n'; //(4)
cout << "CHAR:" << CHARcount << '\n'; //(5)

実行した所(4)と(5)の部分は表示されるのですが,
(3)の部分が表示されません。
つまりwhile{・・・・・}の直後のcoutが表示されません。
while(cin.get(c))で何かが起こっているのでしょうか????(^^;
使用環境は,Windowsで入力の終了は[Ctrl + Z]で行っています。
ご存知の方どうかご指導よろしくお願いします。

いつもお世話になっております。今回はC++言語について質問があります。
次のプログラムは画面から入力された文字の数とリターンの数を数えるプ
ログラムです。

/* 入力の文字数を数えるプログラム */
#include <iostream.h>
int main(int argc, char **argv){
char c;
int RETcount = 0; //改行数
int CHARcount = 0; //文字数

while(cin.get(c)){
if(c == '\n'){
++RETcount;
}
else{
++CHARcount;
}
}

cout << "RET:" << RETcount << '\n'; //(1) ここの...続きを読む

Aベストアンサー

以下の環境で試したところ、問題の状況が再現しました^^;
・Windows98 + Borland C++ 5.5.1 for Win32

Ctrl+Zがあると、次の1行が表示されない(消される?)ようです。
多分MS-DOSのコンソール入出力制御が、そういう仕様なのでしょう。
ためしに出力をテキストファイルにリダイレクトしたところ、ちゃんと
RET:2
CHAR:8
と書き込まれていましたから。
__sourin__さんも、DOS窓から「実行ファイル名 > test.txt」などとして、確認してみて下さい。

というわけで、(1)の前に、
cout << endl;
としてやれば、DOS窓上で実行しても大丈夫みたいですね。
(C++では、'\n'の代わりにendlをcoutへ食わせても、改行になります。)

Qコマンドプロンプト プログラム実行時の文字化け

コマンドプロンプト上で、UTF-8のexeファイルを実行してみたのですが、文字化けしてしまいます。

コマンドプロンプトの設定で、フォントを「MSゴシック」には変更しました。
後、「chcp 65001」も実行しています。
typeコマンドでUTF-8のテキストファイルの中身を見た場合は文字化けが起こりません。


以下、環境を書いておきます。
OS: Windows 7 Home Premium 32bit
コンパイラ: MinGW gcc 4.6.2


文字コードをUTF-8にしたままでOKな改善策があれば、ご教授お願いします。

Aベストアンサー

手元にある MinGW 4.5.0 で試してみました。(Win7 Pro 64bit下)

printf("秒\n"); するだけのソースをUTF-8で保存し、引数なしでコンパイルしました。

・何もしていないコマンドプロンプトでの結果
遘・

・フォントをMSゴシック、chcp 65001実行後の結果


plot02さんの出力も「遘・」ですので、プログラムは問題ないのではないでしょうか。

試しにリダイレクトで出力結果を拾ってみてはどうですか(test.exe >output.txt)
chcp前でもUTF-8形式で「秒」を確認できました。

chcpのトラブルのようですが、あまり情報がないですね。
こちらはどうでしょうか。

・教えて!Ziddyちゃん - UTF-8を表示できるWindows環境下のコンソール
http://ziddy.japan.zdnet.com/qa5051484.html

QをVisualStudioでつかえるようにする

<unistd.h>をVisualStudioでつかえるようにしたいのですが、問題なくコンパイルできるようにするにはどうしたらいいでしょうか?

CygwinというやつをインストールしてやってみたのですがやはりVisualStudioだけでコンパイルしてやりたいのですが。。。。

Aベストアンサー

おそらく<unistd.h>をフルスペックで利用したいわけではないと思います。その中の一部の関数を使いたいだけなら<io.h>などで代用できるはずですから、ヘルプで調べてみることをお勧めします。

ソースを修正せずに、コンパイル&実行ができるようにすることは諦めた方がよいと思います。

移植のことを考えるなら、<unistd.h>とか<windows.h>のような環境に特化したヘッダや、そこで宣言される型や関数などを直接使うのではなく、適切にラッピングしてから使う方が後々楽です。今回は仕方ないでしょうが、今後はそうしましょう。

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。

Qwindows.hがincludeされない

http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/を見ながら何度も試したのですがどうしてもwindows.hがインクルードされません。上記のページに書いてあること以外に必要な作業があるのでしょうか?

Aベストアンサー

回答見る限り、パスが設定されてないっぽいですね。

具体的には
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
の手順3です。

VC++ 2005のメニューから、
ツール → オプション → プロジェクトおよびソリューション → VC++ ディレクトリ
で、
ディレクトリを表示するプロジェクト→
・実行可能ファイル
・インクルードファイル
・ライブラリファイル
の3つの場所にそれぞれ手順3に書かれたパスを追加します。

インクルードファイルの項に追加したパスが、windows.hのある場所なので、これで大丈夫だと思います。
自分もここでつまずいたので…

QCStringからchar*への型変換について教えてください。

以前の質問に

int型 → CString型/char型

がありましたが、

CString型をchar*型に変換する方法を
教えていただければありがたいです。

MSDNで「LPCTSTRキャスト」が説明されていましたが、
例が載ってないのでよくわかりませんでした。

よろしくお願いします。

Aベストアンサー

目的にもよりますが一時的にchar配列として使いたいならCString::GetBuffer()が利用できます。
char配列としての利用が終わったらCString::ReleaseBuffer()する必要がありますが。

直接CString内の文字列を扱う必要があるならCString::operator LPCTSTRで文字列ポインタが得られます。
ただし、CStringオブジェクトをいじると無効ポインタなる可能性があるので気をつけてください。

MSDNのMicrosoft Foundation Classリファレンス→CString→クラスメンバで確認してください。

QDWORDの実際の型は何でしょうか

VC++.NETの環境です。
DOWRD dw1 = 1;
int i = 2; と定義し
ここで
if ( i > dw1 ){
何かの処理;
}
とコーディングすると
warning C4018: '>' : signed と unsigned の数値を比較しようとしました。
のワーニングがでます。
これは、DWORDがint型でなくunsigned int型のようにも見えます。
ある本によれば(VC++.V.NET逆引き大全500の極意)
DWORD はint型であると記述されています。
もし、int型ならこのワーニングはでないはずなのですが、
なぜでるのでしょうか。又、DWORDの実際の型は何なのでしょうか。ご存じのかたおりましたら、教えていただけませんでしょうか。

Aベストアンサー

型定義が知りたいのならば、宣言ファイルを見れば疑問を挟む余地もありません。
DWORD型はwindef.hで
"typedef unsigned long DWORD;"
と宣言されています。

Visual Studioを使っているのならば、知りたい型の上にマウスポインタを置いて右クリック、ポップアップメニューの「定義へ移動」または「宣言へ移動」で簡単に知ることが出来ます。

Qfatal error LNK1120: 外部参照 1 が未解決です

またわからないことが・・・
教えて下さい。
以下をVC++2005でコンパイルすると、

MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
C:\Documents and Settings\tomato\My Documents\Visual Studio 2005\Projects\a\Debug\a.exe : fatal error LNK1120: 外部参照 1 が未解決です。

と警告がでて通りません。
何のことでしょうか。

#include<stdio.h>
#include<process.h>

struct meibo{
  char name[20];
  char tel[20];
  char address[20];
};

void message( void );
void input( FILE *fp, int cnt , struct meibo *a, int *end );

void main( void )
{
  struct meibo a[20];
  FILE *fp;
  int cnt, end;

  if( (fp=fopen( "meibo.dat", "w" ) ) == NULL ){
    printf( "Can not open the meibo.dat.\n" );
    exit( 1 );
  }

  message();

  fprintf( fp, "番号, 名前, TEL, 住所\n" );
  fflush( fp );

  cnt = 0;
  end = 0;
  while( end == 0 ){
    input( fp, cnt, &a[cnt], &end );
    cnt++;
    fflush( fp );
    if( cnt == 20 ){
      printf( "人数が一杯です.終了します.\n" );
      end = 1;
    }
  }
  fclose( fp );
}

void message( void )
{
  printf( "名前, TEL, 住所, endを入力してください.\n" );
  printf( "継続の時はend=0," );
  printf( "中止の時は,end=1と入力してください.\n" );
}

void input( FILE *fp, int cnt, struct meibo *a, int *end )
{
  printf( "名前-->" );
  scanf( "%s", a->name );
  printf( "TEL -->" );
  scanf( "%s", a->tel );
  printf( "住所-->" );
  scanf( "%s", a->address );
  printf( "Exit? Continue:0 Exit:1 -->" );
  scanf( "%d", end );
  printf( "\n" );
  fprintf( fp, "%2d, %s, %s, %s\n",
    cnt+1, a->name, a->tel, a->address );
}

またわからないことが・・・
教えて下さい。
以下をVC++2005でコンパイルすると、

MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
C:\Documents and Settings\tomato\My Documents\Visual Studio 2005\Projects\a\Debug\a.exe : fatal error LNK1120: 外部参照 1 が未解決です。

と警告がでて通りません。
何のことでしょうか。

#include<stdio.h>
#include<process.h>

struct meibo{
  char name[20];
...続きを読む

Aベストアンサー

http://www.a.math.ryukoku.ac.jp/~hig/course/compsci2_2005/man/faq.html
にある現象と同じではないでしょうか、一度お試しください。

QVC++から引数付きexeファイルの実行

タイトルの通り、VC++から外部ファイルを実行したいのですがどのような関数を使えばよいのでしょうか?
exeファイルを実行中は親プロセスであるVCのプログラムの方を止めておきたいのです。
出来ればexeファイルは引数付きで実行したいと思いますので、よろしくお願いします。
開発環境はVisualStudio2005です。

Aベストアンサー

#1です。こちらで作成したサンプルです。
呼び出し側
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
intret;
printf("system試験開始\n");
ret = system("C:\\VCSTUDY\\printarg\\Debug\\printarg.exe XXX YYY ZZZ");
if (ret == 0){
printf("system成功\n");
}else{
printf("system失敗\n");
}
return 0;
}
----------------------

呼び出される側(c:\\test.exeに相当)
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
inti;
for (i = 0; i < argc; i++){
printf("ARGV[%d]=%s\n",i,argv[i]);
}
return 0;
}
以下、実行結果です。
コマンドプロンプト画面に下記の文字が出力されます。
------------------------
system試験開始
ARGV[0]=C:\VCSTUDY\printarg\Debug\printarg.exe
ARGV[1]=XXX
ARGV[2]=YYY
ARGV[3]=ZZZ
system成功
Press any key to continue
---------------------------

#1です。こちらで作成したサンプルです。
呼び出し側
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
intret;
printf("system試験開始\n");
ret = system("C:\\VCSTUDY\\printarg\\Debug\\printarg.exe XXX YYY ZZZ");
if (ret == 0){
printf("system成功\n");
}else{
printf("system失敗\n");
}
return 0;
}
----------------------

呼び出される側(c:\\test.exeに相当)
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
inti;
for (i = 0; i < argc; i++){
p...続きを読む

Qこの はどこに在る? また、参考資料を見たいのですが。

Microsoft Visual Studio 12.0 の VC フォルダにある C 言語環境をコマンドプロンプト画面で操作している者です。お世話になります。
http://oshiete.goo.ne.jp/qa/6784307.html
上記の回答1にフォルダ内のファイル一覧を出すプログラムが紹介されており、素晴らしい動作結果を早速使わせてもらいました。
ところで、このインクルードファイルが見当たりません。marchal_windows.h ってのは在りますが。「Windows 関連の API はダウンロードすべし」とのネット記事もあるのに、そんな事せずに済むのが不思議で。何故でしょう?
また、紹介されている構造体(例:WIN32_FIND_DATA )とか関数(例:FindFirstFile() )の詳細を知りたいです。”The C Library Reference Guide” のごときものはご存じありませんか?

Aベストアンサー

>このインクルードファイルが見当たりません。

環境にもよりますが…
C:\Program Files (x86)\Microsoft SDKs\Windows
のしたのどこか…です。
どのバージョンのSDK使われているか…によりますが。

>「Windows 関連の API はダウンロードすべし」とのネット記事もあるのに、そんな事せずに済むのが不思議で。何故でしょう?

製品版のVisualStudioならインストール時に一緒にインストールされます。
ExpressEditionならVC++2008辺り(2010だったかも知れん)からsdkが同梱されるようになったハズです。
# VC++2005 ExpressEditionは別途インストールが必要。

>紹介されている構造体(例:WIN32_FIND_DATA )とか関数(例:FindFirstFile() )の詳細を知りたいです。

お約束ですが、MSDNサイトで確認してください。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/hh920508%28v=vs.85%29.aspx
辺りですかねぇ……。
右上の検索用のフォームに入力して検索してください。
機械翻訳なので、日本語のページだと構造体の説明やリンクが無かったりするので、そういう場合は英語のページを参照してください。

Win32APIとかまとめられた書籍もあったと思いますが。(ただし最新ではないでしょうが)
http://www.amazon.co.jp/dp/4877832122
とか。

>このインクルードファイルが見当たりません。

環境にもよりますが…
C:\Program Files (x86)\Microsoft SDKs\Windows
のしたのどこか…です。
どのバージョンのSDK使われているか…によりますが。

>「Windows 関連の API はダウンロードすべし」とのネット記事もあるのに、そんな事せずに済むのが不思議で。何故でしょう?

製品版のVisualStudioならインストール時に一緒にインストールされます。
ExpressEditionならVC++2008辺り(2010だったかも知れん)からsdkが同梱されるようになったハズです。
# ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング