C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 文字列の一部を取り出しにつきまして


(過去ログ 37 を表示中)

[トピック内 13 記事 (1 - 13 表示)]  << 0 >>

■18929 / inTopicNo.1)  文字列の一部を取り出しにつきまして
  
□投稿者/ VC初心 (1回)-(2008/05/18(Sun) 13:17:05)

分類:[C/C++] 

お世話になります。

文字列の一部を取り出す a = a.Substring(1, 2); を追加しますとerrorになります。

#include<stdio.h>
main(void){
char a[]="hello\0";
      a = a.Substring(1, 2); error  C2228: '.Substring' : 左側がクラス、構造体、共用体ではありません。
printf("%s\n",a);
return 0;
}


errorの原因として考えられますことでご指導を願えればと願います。
始めたばかりですのでご理解下さい。よろしくお願いいたします。
引用返信 編集キー/
■18930 / inTopicNo.2)  Re[1]: 文字列の一部を取り出しにつきまして
□投稿者/ とおりすかり (8回)-(2008/05/18(Sun) 13:21:44)
No18929 (VC初心 さん) に返信
> お世話になります。
>
> 文字列の一部を取り出す a = a.Substring(1, 2); を追加しますとerrorになります。
>
> #include<stdio.h>
> main(void){
> char a[]="hello\0";
>       a = a.Substring(1, 2); error  C2228: '.Substring' : 左側がクラス、構造体、共用体ではありません。
> printf("%s\n",a);
> return 0;
> }
>
>
> errorの原因として考えられますことでご指導を願えればと願います。
> 始めたばかりですのでご理解下さい。よろしくお願いいたします。

質問の本文を書く欄のすぐ上に投稿モードがありますが
通常モードではなく右の図表モード (ソースコードを貼る場合はこちらを使用)にチェックをいれると
コードがみやすくなりますよ。
引用返信 編集キー/
■18931 / inTopicNo.3)  Re[2]: 文字列の一部を取り出しにつきまして
□投稿者/ VC初心 (2回)-(2008/05/18(Sun) 13:30:29)
とおりすかり さん
ご返信ありごとうございました。
(ソースコードを貼る場合はこちらを使用)にチェックをいれる所には
気が付きませんでした。今後は利用させてもらいたいと思います。
アドバイスをしてもらいましてありごとうございました。

引用返信 編集キー/
■18932 / inTopicNo.4)  Re[3]: 文字列の一部を取り出しにつきまして
□投稿者/ とおりすかり (9回)-(2008/05/18(Sun) 14:06:26)
No18931 (VC初心 さん) に返信
> とおりすかり さん
> ご返信ありごとうございました。
> (ソースコードを貼る場合はこちらを使用)にチェックをいれる所には
> 気が付きませんでした。今後は利用させてもらいたいと思います。
> アドバイスをしてもらいましてありごとうございました。
> 

大変失礼とは存じますが、貴殿の質問されていることは、本当に基礎的なことでございます。
もう一度、入門書と書かれたコードをチェックされてみてください。
それでも解決できない場合は再度ご質問されてください。

でも他の方からのレスがつく場合もあります。

引用返信 編集キー/
■18933 / inTopicNo.5)  Re[4]: 文字列の一部を取り出しにつきまして
□投稿者/ VC初心 (3回)-(2008/05/18(Sun) 14:18:18)
とおりすかり さん
はいわかりました。基礎的なことでご質問しまして大変ご迷惑をお掛けしました。
以上のことから解決済みとさせてもらいます。いろいろとありがとうございました。

解決済み
引用返信 編集キー/
■18935 / inTopicNo.6)  Re[5]: 文字列の一部を取り出しにつきまして
□投稿者/ 組込系の人 (58回)-(2008/05/18(Sun) 14:44:53)
No18933 (VC初心 さん) に返信
> とおりすかり さん
> はいわかりました。基礎的なことでご質問しまして大変ご迷惑をお掛けしました。
> 以上のことから解決済みとさせてもらいます。いろいろとありがとうございました。
>

最近初心者の方の質問に対する対応で色々あったので、一応補足しておきます。
決して初心者は質問するな!という事は無いので、わからない事は質問してください。
遠慮する必要は無いです。

今回に関しては、恐らく参考にしている本なりサイトのサンプルプログラムを
自分なりに変更したらエラーが出た。という流れだと推測しますが
これはプログラムで達成したい目的とは関係ない基本的な文法でのエラーです。
VC++を始めるにあたって取っ掛かりの部分なので、必ず理解しておいたほうが良いと思います。
参考にした物をゆっくりと見れば解決できると思います。
(.NETをしらべると、C#とかVB関連が多いので、C#とごっちゃになってるのかな?)

ここを理解する前に動くソースを提示されてしまうと、VC初心さんが
せっかくVC++という言語を理解するチャンスを奪うことになります。
なので、とおりすかりさんの回答がベストだと思われます。




しかし、どうしても意味がわからないとなった時はとおりすかりさんも
おっしゃってますが、再度質問してください。
わんくまにはC++の神様と言われる人が居たり、どこでそんな情報仕入れるの?
って人が沢山居るのでとても頼りになると思います。
わたしはもっぱらチャチャを入れるのが専門なので役立たずですが・・・・orz


解決済み
引用返信 編集キー/
■18936 / inTopicNo.7)  Re[6]: 文字列の一部を取り出しにつきまして
□投稿者/ 出水 (62回)-(2008/05/18(Sun) 15:46:56)
>文字列の一部を取り出す a = a.Substring(1, 2); を追加しますとerrorになります。
ここだけ、C++でなくC#の文法ですね
名前は似ているけど別物なので混ぜることは出来ません

一応、正解例の一つを示しておきますが、あまり良いコードではないので
それぞれの関数のリファレンスを調べて使ってください

char str[16];
memset(str, 0, sizeof(str));
strncpy(str, a + 1, 2);
解決済み
引用返信 編集キー/
■18937 / inTopicNo.8)  Re[1]: 文字列の一部を取り出しにつきまして
□投稿者/ επιστημη (1019回)-(2008/05/18(Sun) 15:55:05)
επιστημη さんの Web サイト
2008/05/18(Sun) 22:45:59 編集(投稿者)
> 文字列の一部を取り出す a = a.Substring(1, 2); を追加しますとerrorになります。
>  
> #include<stdio.h>
> main(void){
>   char a[]="hello\0";
>   a = a.Substring(1, 2);  // error C2228: '.Substring' : 左側がクラス、構造体、共用体ではありません。
>   printf("%s\n",a);
>   return 0;
> }
> 
> errorの原因として考えられますことでご指導を願えればと願います。

メソッドSubstringはSystem::Stringのメソッドであり、char a[] には適用できません。

↓ここいらへんが無難なとこかな。

#include <cstdio>
#include <cstring>
#include <string>

int main() {
  char a[]="hello";
  std::strcpy(a,std::string(a).substr(1,2).c_str());
  printf("%s\n",a);
  return 0;
}

出水さんの strncpy が簡単で明快かなー 
System::String::Substringの代わりになるもの、ってことで string::substr を使ってみました。

引用返信 編集キー/
■18938 / inTopicNo.9)  Re[1]: 文字列の一部を取り出しにつきまして
□投稿者/ επιστημη (1020回)-(2008/05/18(Sun) 16:15:28)
επιστημη さんの Web サイト
> 文字列の一部を取り出す a = a.Substring(1, 2); を追加しますとerrorになります。

そっか...いや実際Visual C++はビギナにはわかりづらいものになっています。

C, C++, C++/CLI が入り混じってますからね。

SubstringはC++/CLI、.NET Frameworkが提供する文字列: System::String のメソッド。
僕が使ったsubstrはC++、標準C++ライブラリが提供する文字列 std::string のメソッド。
出水さんのstrncpyはC, 標準Cライブラリが提供する文字列操作関数です。

どれが適するかは case-by-case なんですわ。

引用返信 編集キー/
■18940 / inTopicNo.10)  Re[2]: 文字列の一部を取り出しにつきまして
□投稿者/ VC初心 (4回)-(2008/05/18(Sun) 18:43:35)
皆様方のご指導、ご解答をして頂くことで
文字列の一部を取り出せるようになりました。
心より厚くお礼を申し上げます。
皆様方がご指摘されていましたC, C++, C#,.NETその他について
下記のWebページにプログラミング言語比較がありましたので
今後は少しでも把握できればと思っています。
参考 http://www.ne.jp/asahi/hishidama/home/tech/lang/string.html
本当にありがとうございました。感謝致します。
解決済み
引用返信 編集キー/
■18941 / inTopicNo.11)  Re[3]: 文字列の一部を取り出しにつきまして
□投稿者/ επιστημη (1021回)-(2008/05/19(Mon) 00:10:38)
επιστημη さんの Web サイト
2008/05/19(Mon) 06:35:25 編集(投稿者)

# 余計なことながら

strncpy が簡単なのは元ネタが char[] だったからで、
std::string / System::String ならもっと簡単です:

std::string a = "hello";
a = a.substr(1,2);

とか

System::String^ a = L"Hello";
a = a->Substring(1,2);

とか。

解決済み
引用返信 編集キー/
■19024 / inTopicNo.12)  Re[4]: 文字列の一部を取り出しにつきまして
□投稿者/ VC初心 (5回)-(2008/05/19(Mon) 12:47:34)
επιστημη さん

ご返信くださいましてありがとうございます。
># 余計なことながら
とんでもありません。こちらこそ申し訳ありません。
C++/CLIは今回初めて知りました。C++の違いは
new演算子が挙げられていました。また
わんくま勉強会で επιστημη さん
がお話しされていました内容がありましたので参考になりました。
参考 http://karua.at.webry.info/200610/article_23.html
自分は多少ですけどVBを使用しています。
C系はVBとは違い使いこなせるまで暫くかかりそうです。
ご提供して頂きました2例につきましては
C++後C++/CLIに挑戦してみたいと思います。
覚え初め者ですのでご了承ください。
いろいろとご指導してもらいまして大変お世話になりました。

引用返信 編集キー/
■19025 / inTopicNo.13)  Re[5]: 文字列の一部を取り出しにつきまして
□投稿者/ VC初心 (6回)-(2008/05/19(Mon) 12:50:29)
επιστημη さん

ご返信くださいましてありがとうございます。
># 余計なことながら
とんでもありません。こちらこそ申し訳ありません。
C++/CLIは今回初めて知りました。C++の違いは
new演算子が挙げられていました。また
わんくま勉強会で επιστημη さん
がお話しされていました内容がありましたので参考になりました。
参考 http://karua.at.webry.info/200610/article_23.html
自分は多少ですけどVBを使用しています。
C系はVBとは違い使いこなせるまで暫くかかりそうです。
ご提供して頂きました2例につきましては
C++後にC++/CLIに挑戦してみたいと思います。
いろいろとお世話になりました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -