ページ 11

文字列の挿入について。

Posted: 2015年2月18日(水) 16:45
by string!!
文字列の挿入についてです。
 
例えば、

system関数を使ってwindows上でコマンドを実行したいときにsystem("dir");などするわけですが、
windowsのcdコマンドを使いたいときに"cd Document"などするわけですがこのDocumentのところ
を自分が入力したものにしたいわけです。(入力するため毎回変わります。)

コード:

aiueokakikukeko -a ""
また、これの""のなかに文字列を挿入するにはどうすればいいでしょうか。
どのようにすればいいでしょうか。
ソースをいただけないでしょうか。

Re: 文字列の挿入について。

Posted: 2015年2月18日(水) 22:22
by みけCAT
string!! さんが書きました:system関数を使ってwindows上でコマンドを実行したいときにsystem("dir");などするわけですが、
windowsのcdコマンドを使いたいときに"cd Document"などするわけですがこのDocumentのところ
を自分が入力したものにしたいわけです。(入力するため毎回変わります。)
なるほど。"のエスケープや、不正な入力に対するセキュリティに気をつけるといいと思います。
string!! さんが書きました:

コード:

aiueokakikukeko -a ""
また、これの""のなかに文字列を挿入するにはどうすればいいでしょうか。
どのようにすればいいでしょうか。
ソースをいただけないでしょうか。
言語が指定されていないようですが、とりあえずコードタグの表示にしたがってC++で書いてみました。

コード:

#include <cstdio>
#include <string>

std::string insert_text_in_double_quotes(const std::string& target, const std::string& string_to_insert) {
	std::string ret = target;
	std::string::size_type start_pos = 0;
	std::string::size_type length_to_insert = string_to_insert.size();
	for (;;) {
		std::string::size_type next = ret.find("\"\"", start_pos);
		if (next == std::string::npos) break;
		ret.insert(next + 1, string_to_insert);
		start_pos = next + length_to_insert + 2;
	}
	return ret;
}

int main(void) {
	std::string text = "aiueokakikukeko -a \"\"";
	std::string ret = insert_text_in_double_quotes(text, "文字列");
	puts(ret.c_str());
	return 0;
}

Re: 文字列の挿入について。

Posted: 2015年2月18日(水) 22:46
by string!!
ありがとうございます。
はいc++です。
system関数に変数を渡すにはどうすればいいのでしょうか。
また、C言語、C++を勉強する上でおすすめの本がありましたら教えてください。

Re: 文字列の挿入について。

Posted: 2015年2月18日(水) 23:10
by みけCAT
string!! さんが書きました:はいc++です。
system関数に変数を渡すにはどうすればいいのでしょうか。
「system関数に変数を渡す」という概念がよくわからないですが、変数が持っているデータなら普通に渡せばいいのではないでしょうか?

コード:

#include <cstdlib>
#include <string>

int main(void) {
	std::string moziretu = "factor 57885161";
	system(moziretu.c_str());
	return 0;
}

Re: 文字列の挿入について。

Posted: 2015年2月18日(水) 23:39
by string!!
ありがとうございます。
最後におすすめのc言語とC++の本教えてください!!

Re: 文字列の挿入について。

Posted: 2015年2月18日(水) 23:52
by softya(ソフト屋)
実はC++がどういうものか良く分かっていない気がしないでも無いですが、メインとしてC++をやるならC言語は不要だと思いますので、「ロベールのc++入門講座」などを買われてはどうでしょうか。ちなみに、とても難しいです。

【補足】辞書並みの厚さの本なので、私はこんなものをこれから入門するんだという覚悟を決めることが出来る本だと思います。